<?php
/**
 * Created by PhpStorm.
 * User: wuwb
 * Date: 2020/7/4
 * Time: 16:59
 */

/**
 * Class TestStatic
 * 有至少一个静态方法的类,这个类叫做静态类
 * 在静态类的外部可以调用静态方法
 * 在静态类的内部,可以通过self调用静态方法和非静态方法
 * 在方法的内部调用自身,应该特别谨慎
 */
class TestStatic
{

    public function index()
    {
        // 无限循环的调用自己,导致内存溢出
//        echo $this->index();
        echo $this->test() . PHP_EOL;
        echo $this->testSay() .  PHP_EOL;
//
//         echo self::index();
        echo self::test() .  PHP_EOL;      // should be used instead
        echo $this->testSay() .  PHP_EOL;   // should be used instead
        echo self::helloSay() .  PHP_EOL;

        return false;
    }

    public function test()
    {
        return 'test';
    }

    public function testSay()
    {
        return 'testSay';
    }

    public static function helloSay()
    {
        return 'helloSay';
    }
}

// 外部
$hello = new TestStatic();
$hello->index();
TestStatic::helloSay();
